使用排序过滤器 (Sorting Filter)防止过度绘制

Kanzi 中的工程树中,按照从上到下的顺序显示要渲染的节点,如 Kanzi Studio 工程 (Project) 窗口所示。您可以使用过滤器更改 3D 节点的渲染。

当在后台缓冲区中首先将一个节点绘制到某个区域的像素中,然后显示另一个挡住了第一个节点的节点并再次填充这些像素时,就会出现过度绘制问题。过度绘制会增加填充率,因而降低 GPU 性能。如果排列节点以便首先绘制遮挡节点,则由于深度缓冲问题,不必再渲染被遮挡的像素。

在渲染之前,您可以使用排序过滤器 (Sorting Filter) 将 3D 节点按从前到后的顺序排列,并隐藏已知的不可见项,以防止过度绘制。这样会增大 CPU 的负担,原因在于会在绘制之前排序节点并在场景中的变换发生变化(例如通过动画化)时更新节点。

查看对象的过度绘制

过度绘制 (Overdraw) visualization indicates areas where Kanzi renders multiple times to the same pixel. Lighter green color indicates higher amount of overdraw. Kanzi uses the stencil buffer to calculate how many times it draws to the same pixel. If you are using the stencil buffer to render your content, the 过度绘制 (Overdraw) visualization can return unexpected results.

The overdraw visualization does not show:

过度绘制 (Overdraw) visualization works only when you use the OpenGL backend. You can set the 预览 (Preview) backend in the 工程 (Project) > 属性 (Properties) in the 预览 OpenGL ES 包装 (Preview OpenGL ES Wrapper) property.

To view overdraw in your application, in the Kanzi Studio 预览 (Preview) click to enter the 分析 (Analyze) mode, right-click , and select 过度绘制 (Overdraw).

使用排序过滤器 (Sorting Filter) 按从前到后的顺序进行渲染

要使用排序过滤器 (Sorting Filter) 按从前到后的顺序进行渲染:

  1. 素材库 (Library)按下 Alt 并右键点击 渲染 (Rendering) > 对象源 (Object Source),然后选择 排序过滤器 (Sorting Filter)
  2. 属性 (Properties) 中设置:
  3. 素材库 (Library) > 渲染 (Rendering) > 渲染通道 (Render Passes) 中选择您要用于渲染您的场景的 绘图对象渲染通道 (Draw Objects Render Pass)
  4. 属性 (Properties) 中设置对象源 (Object Source) 属性为您在这个过程的第一步中创建的排序过滤器。

默认排序过滤器 (Sorting Filter) 会按从前到后的顺序重新排列场景。但您可以只选择工程中的场景的一部分。如果 GPU 的填充率、照明、纹理或片段着色器是已知的应用程序性能瓶颈,则这种做法会非常有用。请参阅使用标签过滤器 (Tag Filter)

测量这两种情况下的帧速率,以测试排列对整体性能的影响。请参阅排除应用程序的性能问题

另请参阅

渲染最佳实践

优化布局渲染

配置节点以进行有效渲染

使用标签过滤器 (Tag Filter)

渲染静态内容

渲染部分透明节点

最佳实践